home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr05 / wdasm16.zip / HELLO1.ASM < prev    next >
Assembly Source File  |  1993-07-01  |  21KB  |  1,212 lines

  1.         TITLE    WDASM Example Program
  2.         .286
  3.         .MODEL    SMALL
  4.  
  5.         INCLUDE    HELLO2.INC
  6.  
  7.         EXTRN        DefWindowProc:FAR
  8.         EXTRN        GetMessage:FAR
  9.         EXTRN        TranslateMessage:FAR
  10.         EXTRN        FatalExit:FAR
  11.         EXTRN        DispatchMessage:FAR
  12.         EXTRN        GetVersion:FAR
  13.         EXTRN        GetDosEnvironment:FAR
  14.         EXTRN        LocalAlloc:FAR
  15.         EXTRN        LocalRealloc:FAR
  16.         EXTRN        LocalFree:FAR
  17.         EXTRN        FatalAppExit:FAR
  18.         EXTRN        LocalSize:FAR
  19.         EXTRN        UpdateWindow:FAR
  20.         EXTRN        GlobalRealloc:FAR
  21.         EXTRN        GlobalSize:FAR
  22.         EXTRN        InitApp:FAR
  23.         EXTRN        PostQuitMessage:FAR
  24.         EXTRN        LockSegment:FAR
  25.         EXTRN        UnlockSegment:FAR
  26.         EXTRN        WaitEvent:FAR
  27.         EXTRN        GetClientRect:FAR
  28.         EXTRN        GetModuleFileName:FAR
  29.         EXTRN        BeginPaint:FAR
  30.         EXTRN        EndPaint:FAR
  31.         EXTRN        CreateWindow:FAR
  32.         EXTRN        ShowWindow:FAR
  33.         EXTRN        LoadCursor:FAR
  34.         EXTRN        LoadIcon:FAR
  35.         EXTRN        RegisterClass:FAR
  36.         EXTRN        InitTask:FAR
  37.         EXTRN        GetStockObject:FAR
  38.         EXTRN        DrawText:FAR
  39.         EXTRN        Dos3Call:FAR
  40.         EXTRN        __winflags:FAR
  41.  
  42.         .CODE
  43.  
  44. Proc0000Seg1    PROC    NEAR
  45.         ADD    BYTE PTR [BX+SI], AL
  46.         ADD    BYTE PTR [BX+SI], AL
  47.         ADD    BYTE PTR [BX+SI], AL
  48.         ADD    BYTE PTR [BX+SI], AL
  49.         ADD    BYTE PTR [BX+SI], AL
  50.         ADD    BYTE PTR [BX+SI], AL
  51.         ADD    BYTE PTR [BX+SI], AL
  52.         ADD    BYTE PTR [BX+SI], AL
  53. Proc0000Seg1    ENDP
  54.  
  55. Proc0010Seg1    PROC    NEAR
  56.         PUSH    BP
  57.         MOV    BP, SP
  58.         MOV    AX, 002EH
  59.         CALL    NEAR PTR Proc042ASeg1
  60.         CMP    WORD PTR [BP+10], 0
  61.         JZ     L0022H
  62.         JMP    NEAR PTR L008AH
  63. L0022H:        MOV    WORD PTR [BP-46], 0003H
  64.         MOV    WORD PTR [BP-44], LROFFSET WNDPROC
  65.         MOV    WORD PTR [BP-42], SEG WNDPROC
  66.         MOV    WORD PTR [BP-40], 0000H
  67.         MOV    WORD PTR [BP-38], 0000H
  68.         MOV    AX, WORD PTR [BP+12]
  69.         MOV    WORD PTR [BP-36], AX
  70.         PUSH    0
  71.         PUSH    0
  72.         PUSH    7F00H
  73.         CALL    FAR PTR LoadIcon
  74.         MOV    WORD PTR [BP-34], AX
  75.         PUSH    0
  76.         PUSH    0
  77.         PUSH    7F00H
  78.         CALL    FAR PTR LoadCursor
  79.         MOV    WORD PTR [BP-32], AX
  80.         PUSH    0
  81.         CALL    FAR PTR GetStockObject
  82.         MOV    WORD PTR [BP-30], AX
  83.         MOV    WORD PTR [BP-28], 0000H
  84.         MOV    WORD PTR [BP-26], 0000H
  85.         MOV    AX, 0010H
  86.         MOV    DX, DS
  87.         MOV    WORD PTR [BP-24], AX
  88.         MOV    WORD PTR [BP-22], DX
  89.         LEA    AX, WORD PTR [BP-46]
  90.         MOV    DX, SS
  91.         PUSH    DX
  92.         PUSH    AX
  93.         CALL    FAR PTR RegisterClass
  94. L008AH:        MOV    AX, 0010H
  95.         MOV    DX, DS
  96.         PUSH    DX
  97.         PUSH    AX
  98.         MOV    AX, 00C2H
  99.         MOV    DX, DS
  100.         PUSH    DX
  101.         PUSH    AX
  102.         PUSH    00CFH
  103.         PUSH    0
  104.         PUSH    8000H
  105.         PUSH    8000H
  106.         PUSH    8000H
  107.         PUSH    8000H
  108.         PUSH    0
  109.         PUSH    0
  110.         PUSH    WORD PTR [BP+12]
  111.         PUSH    0
  112.         PUSH    0
  113.         CALL    FAR PTR CreateWindow
  114.         MOV    WORD PTR [BP-2], AX
  115.         PUSH    AX
  116.         PUSH    WORD PTR [BP+4]
  117.         CALL    FAR PTR ShowWindow
  118.         PUSH    WORD PTR [BP-2]
  119.         CALL    FAR PTR UpdateWindow
  120. L00CDH:        LEA    AX, WORD PTR [BP-20]
  121.         MOV    DX, SS
  122.         PUSH    DX
  123.         PUSH    AX
  124.         PUSH    0
  125.         PUSH    0
  126.         PUSH    0
  127.         CALL    FAR PTR GetMessage
  128.         AND    AX, AX
  129.         JZ     L00FEH
  130.         LEA    AX, WORD PTR [BP-20]
  131.         MOV    DX, SS
  132.         PUSH    DX
  133.         PUSH    AX
  134.         CALL    FAR PTR TranslateMessage
  135.         LEA    AX, WORD PTR [BP-20]
  136.         MOV    DX, SS
  137.         PUSH    DX
  138.         PUSH    AX
  139.         CALL    FAR PTR DispatchMessage
  140.         JMP    SHORT L00CDH
  141.         NOP
  142. L00FEH:        MOV    AX, WORD PTR [BP-16]
  143.         LEAVE
  144.         RET    000AH
  145. Proc0010Seg1    ENDP
  146.  
  147.  
  148. Proc0105Seg1    PROC    NEAR
  149.         NOP
  150. Proc0105Seg1    ENDP
  151.  
  152. WNDPROC    PROC    FAR PUBLIC
  153.         PUSH    DS
  154.         POP    AX
  155.         NOP
  156.         INC    BP
  157.         PUSH    BP
  158.         MOV    BP, SP
  159.         PUSH    DS
  160.         MOV    DS, AX
  161.         MOV    AX, 002CH
  162.         CALL    NEAR PTR Proc042ASeg1
  163.         PUSH    SI
  164.         PUSH    DI
  165.         MOV    SI, WORD PTR [BP+14]
  166.         MOV    AX, WORD PTR [BP+12]
  167.         JMP    NEAR PTR L017AH
  168.         NOP
  169. L0122H:        PUSH    SI
  170.         LEA    AX, WORD PTR [BP-36]
  171.         MOV    DX, SS
  172.         PUSH    DX
  173.         PUSH    AX
  174.         CALL    FAR PTR BeginPaint
  175.         MOV    DI, AX
  176.         PUSH    SI
  177.         LEA    AX, WORD PTR [BP-44]
  178.         MOV    DX, SS
  179.         PUSH    DX
  180.         PUSH    AX
  181.         CALL    FAR PTR GetClientRect
  182.         PUSH    DI
  183.         MOV    AX, 00DFH
  184.         MOV    DX, DS
  185.         PUSH    DX
  186.         PUSH    AX
  187.         PUSH    -1
  188.         LEA    AX, WORD PTR [BP-44]
  189.         MOV    DX, SS
  190.         PUSH    DX
  191.         PUSH    AX
  192.         PUSH    37
  193.         CALL    FAR PTR DrawText
  194.         PUSH    SI
  195.         LEA    AX, WORD PTR [BP-36]
  196.         MOV    DX, SS
  197.         PUSH    DX
  198.         PUSH    AX
  199.         CALL    FAR PTR EndPaint
  200.         XOR    AX, AX
  201.         XOR    DX, DX
  202.         JMP    SHORT L019FH
  203.         NOP
  204. L016AH:        PUSH    0
  205.         CALL    FAR PTR PostQuitMessage
  206.         XOR    AX, AX
  207.         XOR    DX, DX
  208.         JMP    SHORT L019FH
  209.         NOP
  210.         JMP    SHORT L0187H
  211. L017AH:        CMP    AX, 0002H
  212.         JZ     L016AH
  213.         CMP    AX, 000FH
  214.         JNZ    L0187H
  215.         JMP    NEAR PTR L0122H
  216. L0187H:        PUSH    SI
  217.         PUSH    WORD PTR [BP+12]
  218.         PUSH    WORD PTR [BP+10]
  219.         PUSH    WORD PTR [BP+8]
  220.         PUSH    WORD PTR [BP+6]
  221.         CALL    FAR PTR DefWindowProc
  222.         JMP    SHORT L019FH
  223.         NOP
  224.         MOV    WORD PTR [BP+14], SI
  225. L019FH:        POP    DI
  226.         POP    SI
  227.         SUB    BP, 2
  228.         MOV    SP, BP
  229.         POP    DS
  230.         POP    BP
  231.         DEC    BP
  232.         RETF    000AH
  233. WNDPROC    ENDP
  234.  
  235.  
  236. Proc01ACSeg1    PROC    NEAR
  237. L01ACH        DW    LROFFSET __winflags
  238. L01AEH:        MOV    AL, -1
  239.         PUSH    AX
  240.         CALL    NEAR PTR Proc034ESeg1
  241. L01B4H::    XOR    BP, BP
  242.         PUSH    BP
  243.         CALL    FAR PTR InitTask
  244.         OR    AX, AX
  245.         JZ     L01AEH
  246.         MOV    WORD PTR D0064H, ES
  247.         ADD    CX, 0100H
  248.         JB     L01AEH
  249.         MOV    WORD PTR D002EH, CX
  250.         MOV    WORD PTR D0030H, SI
  251.         MOV    WORD PTR D0032H, DI
  252.         MOV    WORD PTR D0034H, BX
  253.         MOV    WORD PTR D0036H, ES
  254.         MOV    WORD PTR D0038H, DX
  255.         CALL    FAR PTR GetVersion
  256.         MOV    WORD PTR D0066H, AX
  257.         MOV    AH, 48
  258.         TEST    WORD PTR CS:L01ACH, 0001H
  259.         JZ     L01FCH
  260.         CALL    FAR PTR Dos3Call
  261.         JMP    SHORT L01FEH
  262. L01FCH:        INT    0021H
  263. L01FEH:        MOV    WORD PTR D0068H, AX
  264.         TEST    WORD PTR CS:L01ACH, 0001H
  265.         JNZ    L020FH
  266.         MOV    AL, 0
  267.         MOV    BYTE PTR D006BH, AL
  268. L020FH:        XOR    AX, AX
  269.         PUSH    AX
  270.         CALL    FAR PTR WaitEvent
  271.         PUSH    WORD PTR D0032H
  272.         CALL    FAR PTR InitApp
  273.         OR    AX, AX
  274.         JZ     L01AEH
  275.         CALL    NEAR PTR Proc0268Seg1
  276.         CALL    NEAR PTR Proc047ESeg1
  277.         CALL    NEAR PTR Proc05FCSeg1
  278.         CALL    NEAR PTR Proc085CSeg1
  279.         PUSH    WORD PTR D00A0H
  280.         PUSH    WORD PTR D009EH
  281.         PUSH    WORD PTR D009CH
  282.         CALL    NEAR PTR Proc024CSeg1
  283.         ADD    SP, 6
  284.         PUSH    AX
  285.         CALL    NEAR PTR Proc0347Seg1
  286.         MOV    AX, 0015H
  287.         JMP    NEAR PTR L0683H
  288. Proc01ACSeg1    ENDP
  289.  
  290. Proc024CSeg1    PROC    NEAR
  291.         PUSH    BP
  292.         MOV    BP, SP
  293.         PUSH    WORD PTR D0032H
  294.         PUSH    WORD PTR D0030H
  295.         PUSH    WORD PTR D0036H
  296.         PUSH    WORD PTR D0034H
  297.         PUSH    WORD PTR D0038H
  298.         CALL    NEAR PTR Proc0010Seg1
  299.         POP    BP
  300.         RET
  301. Proc024CSeg1    ENDP
  302.  
  303.  
  304. Proc0268Seg1    PROC    NEAR
  305.         MOV    AX, 3500H
  306.         TEST    WORD PTR CS:L01ACH, 0001H
  307.         JZ     L027BH
  308.         CALL    FAR PTR Dos3Call
  309.         JMP    SHORT L027DH
  310. L027BH:        INT    0021H
  311. L027DH:        MOV    WORD PTR D0050H, BX
  312.         MOV    WORD PTR D0052H, ES
  313.         PUSH    CS
  314.         POP    DS
  315.         MOV    AX, 2500H
  316.         MOV    DX, 067EH
  317.         TEST    WORD PTR CS:L01ACH, 0001H
  318.         JZ     L029DH
  319.         CALL    FAR PTR Dos3Call
  320.         JMP    SHORT L029FH
  321. L029DH:        INT    0021H
  322. L029FH:        PUSH    SS
  323.         POP    DS
  324.         MOV    CX, WORD PTR D00B8H
  325.         JCXZ    L02D0H
  326.         MOV    ES, WORD PTR D0064H
  327.         MOV    SI, WORD PTR ES:D002CH
  328.         MOV    AX, WORD PTR D00BAH
  329.         MOV    DX, WORD PTR D00BCH
  330.         XOR    BX, BX
  331.         CALL    DWORD PTR D00B6H
  332.         JAE    L02C2H
  333.         JMP    NEAR PTR L0424H
  334. L02C2H:        MOV    AX, WORD PTR D00BEH
  335.         MOV    DX, WORD PTR D00C0H
  336.         MOV    BX, 0003H
  337.         CALL    DWORD PTR D00B6H
  338. L02D0H:        MOV    ES, WORD PTR D0064H
  339.         MOV    CX, WORD PTR ES:D002CH
  340.         JCXZ    L0319H
  341.         MOV    ES, CX
  342.         XOR    DI, DI
  343. L02DFH:        CMP    BYTE PTR ES:[DI], 0
  344.         JZ     L0319H
  345.         MOV    CX, 000DH
  346.         MOV    SI, 0042H
  347.         REPE    CMPSB
  348.         JZ     L02FAH
  349.         MOV    CX, 7FFFH
  350.         XOR    AX, AX
  351.         REPNE    SCASB
  352.         JNZ    L0319H
  353.         JMP    SHORT L02DFH
  354. L02FAH:        PUSH    ES
  355.         PUSH    DS
  356.         POP    ES
  357.         POP    DS
  358.         MOV    SI, DI
  359.         MOV    DI, 0074H
  360.         MOV    CL, 4
  361. L0305H:        LODSB
  362.         SUB    AL, 65
  363.         JB     L0317H
  364.         SHL    AL, CL
  365.         XCHG    DX, AX
  366.         LODSB
  367.         SUB    AL, 65
  368.         JB     L0317H
  369.         OR    AL, DL
  370.         STOSB
  371.         JMP    SHORT L0305H
  372. L0317H:        PUSH    SS
  373.         POP    DS
  374. L0319H:        MOV    SI, 00C2H
  375.         MOV    DI, 00C2H
  376.         CALL    NEAR PTR Proc03EBSeg1
  377.         MOV    SI, 00C2H
  378.         MOV    DI, 00C2H
  379.         CALL    NEAR PTR Proc03FASeg1
  380.         MOV    SI, 00C2H
  381.         MOV    DI, 00C2H
  382.         CALL    NEAR PTR Proc03EBSeg1
  383.         MOV    SI, 00C2H
  384.         MOV    DI, 00C2H
  385.         CALL    NEAR PTR Proc03EBSeg1
  386.         MOV    SI, 00C2H
  387.         MOV    DI, 00C2H
  388.         CALL    NEAR PTR Proc03FASeg1
  389.         RET
  390. Proc0268Seg1    ENDP
  391.  
  392.  
  393. Proc0347Seg1    PROC    NEAR
  394.         PUSH    BP
  395.         MOV    BP, SP
  396.         XOR    CX, CX
  397.         JMP    SHORT L0368H
  398. Proc0347Seg1    ENDP
  399.  
  400. Proc034ESeg1    PROC    NEAR
  401.         PUSH    BP
  402.         MOV    BP, SP
  403.         MOV    CX, 0001H
  404.         JMP    SHORT L0368H
  405.         PUSH    BP
  406.         MOV    BP, SP
  407.         PUSH    SI
  408.         PUSH    DI
  409.         MOV    CX, 0100H
  410.         JMP    SHORT L0368H
  411.         PUSH    BP
  412.         MOV    BP, SP
  413.         PUSH    SI
  414.         PUSH    DI
  415.         MOV    CX, 0101H
  416. L0368H::    MOV    BYTE PTR D00A9H, CH
  417.         PUSH    CX
  418.         OR    CL, CL
  419.         JNZ    L038DH
  420.         MOV    SI, 024CH
  421.         MOV    DI, 024CH
  422.         CALL    NEAR PTR Proc03EBSeg1
  423.         MOV    SI, 00C2H
  424.         MOV    DI, 00C2H
  425.         CALL    NEAR PTR Proc03EBSeg1
  426.         MOV    SI, WORD PTR [BP+4]
  427.         PUSH    SI
  428.         CALL    NEAR PTR Proc085CSeg1
  429.         ADD    SP, 2
  430. L038DH:        MOV    SI, 00C2H
  431.         MOV    DI, 00C2H
  432.         CALL    NEAR PTR Proc03EBSeg1
  433.         MOV    SI, 00C2H
  434.         MOV    DI, 00C2H
  435.         CALL    NEAR PTR Proc03FASeg1
  436.         CALL    NEAR PTR Proc03C2Seg1
  437.         POP    AX
  438.         OR    AH, AH
  439.         JNZ    L03BEH
  440.         MOV    AX, WORD PTR [BP+4]
  441.         MOV    AH, 76
  442.         TEST    WORD PTR CS:L01ACH, 0001H
  443.         JZ     L03BCH
  444.         CALL    FAR PTR Dos3Call
  445.         JMP    SHORT L03BEH
  446. L03BCH:        INT    0021H
  447. L03BEH:        POP    DI
  448.         POP    SI
  449.         POP    BP
  450.         RET
  451. Proc034ESeg1    ENDP
  452.  
  453.  
  454. Proc03C2Seg1    PROC    NEAR
  455.         MOV    CX, WORD PTR D00B8H
  456.         JCXZ    L03CFH
  457.         MOV    BX, 0002H
  458.         CALL    DWORD PTR D00B6H
  459. L03CFH:        PUSH    DS
  460.         LDS    DX, DWORD PTR D0050H
  461.         MOV    AX, 2500H
  462.         TEST    WORD PTR CS:L01ACH, 0001H
  463.         JZ     L03E7H
  464.         CALL    FAR PTR Dos3Call
  465.         JMP    SHORT L03E9H
  466. L03E7H:        INT    0021H
  467. L03E9H:        POP    DS
  468.         RET
  469. Proc03C2Seg1    ENDP
  470.  
  471.  
  472. Proc03EBSeg1    PROC    NEAR
  473. L03EBH:        CMP    SI, DI
  474.         JAE    L03F9H
  475.         DEC    DI
  476.         DEC    DI
  477.         MOV    CX, WORD PTR [DI]
  478.         JCXZ    L03EBH
  479.         CALL    CX
  480.         JMP    SHORT L03EBH
  481. L03F9H:        RET
  482. Proc03EBSeg1    ENDP
  483.  
  484.  
  485. Proc03FASeg1    PROC    NEAR
  486. L03FAH:        CMP    SI, DI
  487.         JAE    L040CH
  488.         SUB    DI, 4
  489.         MOV    AX, WORD PTR [DI]
  490.         OR    AX, WORD PTR [DI+2]
  491.         JZ     L03FAH
  492.         CALL    DWORD PTR [DI]
  493.         JMP    SHORT L03FAH
  494. L040CH:        RET
  495. Proc03FASeg1    ENDP
  496.  
  497.  
  498. Proc040DSeg1    PROC    NEAR
  499. L040DH        DB    0000H
  500. Proc040DSeg1    ENDP
  501.  
  502. Proc040ESeg1    PROC    NEAR
  503.         PUSH    BP
  504.         MOV    BP, SP
  505.         MOV    AX, 00FCH
  506.         PUSH    AX
  507.         CALL    NEAR PTR Proc06EDSeg1
  508.         MOV    AX, 00FFH
  509.         PUSH    AX
  510.         CALL    NEAR PTR Proc06EDSeg1
  511.         MOV    SP, BP
  512.         POP    BP
  513.         RET
  514. Proc040ESeg1    ENDP
  515.  
  516.  
  517. Proc0423Seg1    PROC    NEAR
  518. L0423H        DB    0000H
  519. L0424H::    MOV    AX, 0002H
  520.         JMP    NEAR PTR L0683H
  521. Proc0423Seg1    ENDP
  522.  
  523. Proc042ASeg1    PROC    NEAR
  524.         POP    BX
  525.         INC    AX
  526.         AND    AL, -2
  527.         SUB    AX, SP
  528.         JAE    L0477H
  529.         NEG    AX
  530.         CMP    WORD PTR SS:D000AH, AX
  531.         JA     L0477H
  532.         CMP    WORD PTR SS:D000CH, AX
  533.         JBE    L0446H
  534.         MOV    WORD PTR D000CH, AX
  535. L0446H:        MOV    SP, AX
  536.         JMP    BX
  537.         POP    BX
  538.         POP    DX
  539.         INC    AX
  540.         AND    AL, -2
  541.         SUB    AX, SP
  542.         JAE    L046CH
  543.         NEG    AX
  544.         CMP    WORD PTR SS:D000AH, AX
  545.         JA     L046CH
  546.         CMP    WORD PTR SS:D000CH, AX
  547.         JBE    L0467H
  548.         MOV    WORD PTR D000CH, AX
  549. L0467H:        MOV    SP, AX
  550.         PUSH    DX
  551.         PUSH    BX
  552.         RETF
  553. Proc042ASeg1    ENDP
  554.  
  555.  
  556. Proc046CSeg1    PROC    NEAR
  557. L046CH::    MOV    DX, WORD PTR SS:D00ACH
  558.         INC    DX
  559.         JZ     L0477H
  560.         JMP    WORD PTR D00ACH
  561. L0477H::    MOV    AX, 0000H
  562.         JMP    NEAR PTR L0683H
  563. L047DH        DB    0000H
  564. Proc046CSeg1    ENDP
  565.  
  566. Proc047ESeg1    PROC    NEAR
  567.         POP    WORD PTR D00AEH
  568.         MOV    AX, 0104H
  569.         MOV    CX, 0008H
  570.         CALL    NEAR PTR Proc071ESeg1
  571.         MOV    WORD PTR D00A4H, DX
  572.         MOV    WORD PTR D00A2H, AX
  573.         PUSH    DX
  574.         PUSH    AX
  575.         PUSH    WORD PTR D0032H
  576.         PUSH    DX
  577.         PUSH    AX
  578.         MOV    AX, 0104H
  579.         PUSH    AX
  580.         CALL    FAR PTR GetModuleFileName
  581.         POP    BX
  582.         POP    ES
  583.         ADD    BX, AX
  584.         MOV    BYTE PTR ES:[BX], 0
  585.         MOV    DX, 0001H
  586.         MOV    DI, 0001H
  587.         MOV    SI, 0081H
  588.         MOV    DS, WORD PTR D0064H
  589. L04B8H:        LODSB
  590.         CMP    AL, 32
  591.         JZ     L04B8H
  592.         CMP    AL, 9
  593.         JZ     L04B8H
  594.         CMP    AL, 13
  595.         JZ     L0534H
  596.         OR    AL, AL
  597.         JZ     L0534H
  598.         INC    DI
  599. L04CAH:        DEC    SI
  600. L04CBH:        LODSB
  601.         CMP    AL, 32
  602.         JZ     L04B8H
  603.         CMP    AL, 9
  604.         JZ     L04B8H
  605.         CMP    AL, 13
  606.         JZ     L0534H
  607.         OR    AL, AL
  608.         JZ     L0534H
  609.         CMP    AL, 34
  610.         JZ     L0504H
  611.         CMP    AL, 92
  612.         JZ     L04E7H
  613.         INC    DX
  614.         JMP    SHORT L04CBH
  615. L04E7H:        XOR    CX, CX
  616. L04E9H:        INC    CX
  617.         LODSB
  618.         CMP    AL, 92
  619.         JZ     L04E9H
  620.         CMP    AL, 34
  621.         JZ     L04F7H
  622.         ADD    DX, CX
  623.         JMP    SHORT L04CAH
  624. L04F7H:        MOV    AX, CX
  625.         SHR    CX, 1
  626.         ADC    DX, CX
  627.         TEST    AL, 1
  628.         JNZ    L04CBH
  629.         JMP    SHORT L0504H
  630. L0503H:        DEC    SI
  631. L0504H:        LODSB
  632.         CMP    AL, 13
  633.         JZ     L0534H
  634.         OR    AL, AL
  635.         JZ     L0534H
  636.         CMP    AL, 34
  637.         JZ     L04CBH
  638.         CMP    AL, 92
  639.         JZ     L0518H
  640.         INC    DX
  641.         JMP    SHORT L0504H
  642. L0518H:        XOR    CX, CX
  643. L051AH:        INC    CX
  644.         LODSB
  645.         CMP    AL, 92
  646.         JZ     L051AH
  647.         CMP    AL, 34
  648.         JZ     L0528H
  649.         ADD    DX, CX
  650.         JMP    SHORT L0503H
  651. L0528H:        MOV    AX, CX
  652.         SHR    CX, 1
  653.         ADC    DX, CX
  654.         TEST    AL, 1
  655.         JNZ    L0504H
  656.         JMP    SHORT L04CBH
  657. L0534H:        PUSH    SS
  658.         POP    DS
  659.         MOV    WORD PTR D009CH, DI
  660.         ADD    DX, DI
  661.         INC    DI
  662.         SHL    DI, 1
  663.         ADD    DX, DI
  664.         INC    DX
  665.         AND    DL, -2
  666.         SUB    SP, DX
  667.         MOV    AX, SP
  668.         MOV    WORD PTR D009EH, AX
  669.         MOV    BX, AX
  670.         ADD    DI, BX
  671.         PUSH    SS
  672.         POP    ES
  673.         LDS    SI, DWORD PTR D00A2H
  674.         MOV    WORD PTR SS:[BX], SI
  675.         INC    BX
  676.         INC    BX
  677.         MOV    DS, WORD PTR SS:D0064H
  678.         MOV    SI, 0081H
  679.         JMP    SHORT L0568H
  680. L0565H:        XOR    AX, AX
  681.         STOSB
  682. L0568H:        LODSB
  683.         CMP    AL, 32
  684.         JZ     L0568H
  685.         CMP    AL, 9
  686.         JZ     L0568H
  687.         CMP    AL, 13
  688.         JZ     L05F1H
  689.         OR    AL, AL
  690.         JZ     L05F1H
  691.         MOV    WORD PTR SS:[BX], DI
  692.         INC    BX
  693.         INC    BX
  694. L057EH:        DEC    SI
  695. L057FH:        LODSB
  696.         CMP    AL, 32
  697.         JZ     L0565H
  698.         CMP    AL, 9
  699.         JZ     L0565H
  700.         CMP    AL, 13
  701.         JZ     L05EEH
  702.         OR    AL, AL
  703.         JZ     L05EEH
  704.         CMP    AL, 34
  705.         JZ     L05BBH
  706.         CMP    AL, 92
  707.         JZ     L059BH
  708.         STOSB
  709.         JMP    SHORT L057FH
  710. L059BH:        XOR    CX, CX
  711. L059DH:        INC    CX
  712.         LODSB
  713.         CMP    AL, 92
  714.         JZ     L059DH
  715.         CMP    AL, 34
  716.         JZ     L05ADH
  717.         MOV    AL, 92
  718.         REP    STOSB
  719.         JMP    SHORT L057EH
  720. L05ADH:        MOV    AL, 92
  721.         SHR    CX, 1
  722.         REP    STOSB
  723.         JAE    L05BBH
  724.         MOV    AL, 34
  725.         STOSB
  726.         JMP    SHORT L057FH
  727. L05BAH:        DEC    SI
  728. L05BBH:        LODSB
  729.         CMP    AL, 13
  730.         JZ     L05EEH
  731.         OR    AL, AL
  732.         JZ     L05EEH
  733.         CMP    AL, 34
  734.         JZ     L057FH
  735.         CMP    AL, 92
  736.         JZ     L05CFH
  737.         STOSB
  738.         JMP    SHORT L05BBH
  739. L05CFH:        XOR    CX, CX
  740. L05D1H:        INC    CX
  741.         LODSB
  742.         CMP    AL, 92
  743.         JZ     L05D1H
  744.         CMP    AL, 34
  745.         JZ     L05E1H
  746.         MOV    AL, 92
  747.         REP    STOSB
  748.         JMP    SHORT L05BAH
  749. L05E1H:        MOV    AL, 92
  750.         SHR    CX, 1
  751.         REP    STOSB
  752.         JAE    L057FH
  753.         MOV    AL, 34
  754.         STOSB
  755.         JMP    SHORT L05BBH
  756. L05EEH:        XOR    AX, AX
  757.         STOSB
  758. L05F1H:        PUSH    SS
  759.         POP    DS
  760.         MOV    WORD PTR [BX], 0000H
  761.         JMP    WORD PTR D00AEH
  762. L05FBH        DB    0000H
  763. Proc047ESeg1    ENDP
  764.  
  765. Proc05FCSeg1    PROC    NEAR
  766.         PUSH    BP
  767.         MOV    BP, SP
  768.         PUSH    DS
  769.         CALL    FAR PTR GetDosEnvironment
  770.         OR    AX, AX
  771.         JZ     L060BH
  772.         MOV    DX, AX
  773. L060BH:        MOV    BX, DX
  774.         MOV    ES, DX
  775.         XOR    AX, AX
  776.         XOR    SI, SI
  777.         XOR    DI, DI
  778.         MOV    CX, 0FFFFH
  779.         OR    BX, BX
  780.         JZ     L062AH
  781.         CMP    BYTE PTR ES:D0000H, 0
  782.         JZ     L062AH
  783. L0624H:        REPNE    SCASB
  784.         INC    SI
  785.         SCASB
  786.         JNZ    L0624H
  787. L062AH:        MOV    AX, DI
  788.         INC    AX
  789.         AND    AL, -2
  790.         INC    SI
  791.         MOV    DI, SI
  792.         SHL    SI, 1
  793.         MOV    CX, 0009H
  794.         CALL    NEAR PTR Proc071ESeg1
  795.         PUSH    AX
  796.         MOV    AX, SI
  797.         CALL    NEAR PTR Proc071ESeg1
  798.         MOV    WORD PTR D00A0H, AX
  799.         PUSH    ES
  800.         PUSH    DS
  801.         POP    ES
  802.         POP    DS
  803.         MOV    CX, DI
  804.         MOV    BX, AX
  805.         XOR    SI, SI
  806.         POP    DI
  807.         DEC    CX
  808.         JCXZ    L0677H
  809. L0651H:        MOV    AX, WORD PTR [SI]
  810.         CMP    AX, WORD PTR SS:D0042H
  811.         JNZ    L066AH
  812.         PUSH    CX
  813.         PUSH    SI
  814.         PUSH    DI
  815.         MOV    DI, 0042H
  816.         MOV    CX, 0006H
  817.         REPE    CMPSW
  818.         POP    DI
  819.         POP    SI
  820.         POP    CX
  821.         JZ     L066FH
  822. L066AH:        MOV    WORD PTR ES:[BX], DI
  823.         INC    BX
  824.         INC    BX
  825. L066FH:        LODSB
  826.         STOSB
  827.         OR    AL, AL
  828.         JNZ    L066FH
  829.         LOOP    L0651H
  830. L0677H:        MOV    WORD PTR ES:[BX], CX
  831.         POP    DS
  832.         POP    BP
  833.         RET
  834. Proc05FCSeg1    ENDP
  835.  
  836.  
  837. Proc067DSeg1    PROC    NEAR
  838. L067DH        DB    0000H
  839.         PUSH    SS
  840.         POP    DS
  841.         MOV    AX, 0003H
  842. L0683H::    PUSH    AX
  843.         PUSH    AX
  844.         CALL    NEAR PTR Proc040ESeg1
  845.         CALL    NEAR PTR Proc06EDSeg1
  846.         CALL    NEAR PTR Proc06C2Seg1
  847.         XOR    BX, BX
  848.         OR    AX, AX
  849.         JZ     L06B1H
  850.         MOV    DI, AX
  851.         MOV    AX, 0009H
  852.         CMP    BYTE PTR [DI], 77
  853.         JNZ    L06A1H
  854.         MOV    AX, 000FH
  855. L06A1H:        ADD    DI, AX
  856.         PUSH    DI
  857.         PUSH    DS
  858.         POP    ES
  859.         MOV    AL, 13
  860.         MOV    CX, 0022H
  861.         REPNE    SCASB
  862.         MOV    BYTE PTR [DI-1], BL
  863.         POP    AX
  864. L06B1H:        PUSH    BX
  865.         PUSH    DS
  866.         PUSH    AX
  867.         CALL    FAR PTR FatalAppExit
  868.         MOV    AX, 00FFH
  869.         PUSH    AX
  870.         CALL    FAR PTR FatalExit
  871. Proc067DSeg1    ENDP
  872.  
  873. Proc06C2Seg1    PROC    NEAR
  874.         PUSH    BP
  875.         MOV    BP, SP
  876.         PUSH    SI
  877.         PUSH    DI
  878.         PUSH    DS
  879.         POP    ES
  880.         MOV    DX, WORD PTR [BP+4]
  881.         MOV    SI, 0102H
  882. L06CFH:        LODSW
  883.         CMP    AX, DX
  884.         JZ     L06E4H
  885.         INC    AX
  886.         XCHG    SI, AX
  887.         JZ     L06E4H
  888.         XCHG    DI, AX
  889.         XOR    AX, AX
  890.         MOV    CX, 0FFFFH
  891.         REPNE    SCASB
  892.         MOV    SI, DI
  893.         JMP    SHORT L06CFH
  894. L06E4H:        XCHG    SI, AX
  895.         POP    DI
  896.         POP    SI
  897.         MOV    SP, BP
  898.         POP    BP
  899.         RET    0002H
  900. Proc06C2Seg1    ENDP
  901.  
  902.  
  903. Proc06EDSeg1    PROC    NEAR
  904.         PUSH    BP
  905.         MOV    BP, SP
  906.         PUSH    DI
  907.         CMP    WORD PTR D00B2H, 0
  908.         JZ     L0716H
  909.         PUSH    WORD PTR [BP+4]
  910.         CALL    NEAR PTR Proc06C2Seg1
  911.         OR    AX, AX
  912.         JZ     L0716H
  913.         XCHG    DX, AX
  914.         MOV    DI, DX
  915.         XOR    AX, AX
  916.         MOV    CX, 0FFFFH
  917.         REPNE    SCASB
  918.         NOT    CX
  919.         DEC    CX
  920.         MOV    BX, WORD PTR D006EH
  921.         CALL    NEAR PTR Proc0861Seg1
  922. L0716H:        POP    DI
  923.         MOV    SP, BP
  924.         POP    BP
  925.         RET    0002H
  926. Proc06EDSeg1    ENDP
  927.  
  928.  
  929. Proc071DSeg1    PROC    NEAR
  930. L071DH        DB    0000H
  931. Proc071DSeg1    ENDP
  932.  
  933. Proc071ESeg1    PROC    NEAR
  934.         PUSH    BP
  935.         MOV    BP, SP
  936.         PUSH    BX
  937.         PUSH    ES
  938.         PUSH    CX
  939.         MOV    CX, 1000H
  940.         XCHG    CX, WORD PTR D00B0H
  941.         PUSH    CX
  942.         PUSH    AX
  943.         CALL    NEAR PTR Proc0868Seg1
  944.         POP    BX
  945.         POP    WORD PTR D00B0H
  946.         POP    CX
  947.         MOV    DX, DS
  948.         OR    AX, AX
  949.         JZ     L0740H
  950.         POP    ES
  951.         POP    BX
  952.         JMP    SHORT L0745H
  953. L0740H:        MOV    AX, CX
  954.         JMP    NEAR PTR L0683H
  955. L0745H:        MOV    SP, BP
  956.         POP    BP
  957.         RET
  958. Proc071ESeg1    ENDP
  959.  
  960.  
  961. Proc0749Seg1    PROC    NEAR
  962. L0749H        DB    0000H
  963.         PUSH    CX
  964.         PUSH    DI
  965.         TEST    BYTE PTR [BX+2], 1
  966.         JZ     L07B5H
  967.         CALL    NEAR PTR Proc083CSeg1
  968.         MOV    DI, SI
  969.         MOV    AX, WORD PTR [SI]
  970.         TEST    AL, 1
  971.         JZ     L0760H
  972.         SUB    CX, AX
  973.         DEC    CX
  974. L0760H:        INC    CX
  975.         INC    CX
  976.         MOV    SI, WORD PTR [BX+4]
  977.         OR    SI, SI
  978.         JZ     L07B5H
  979.         ADD    CX, SI
  980.         JAE    L0776H
  981.         XOR    AX, AX
  982.         MOV    DX, 0FFF0H
  983.         JCXZ    L07A4H
  984.         JMP    SHORT L07B5H
  985. L0776H:        PUSH    SS
  986.         POP    ES
  987.         MOV    AX, WORD PTR D00B0H
  988.         CMP    AX, 1000H
  989.         JZ     L0797H
  990.         MOV    DX, 8000H
  991. L0784H:        CMP    DX, AX
  992.         JB     L078EH
  993.         SHR    DX, 1
  994.         JNZ    L0784H
  995.         JMP    SHORT L07B0H
  996. L078EH:        CMP    DX, 8
  997.         JB     L07B0H
  998.         SHL    DX, 1
  999.         MOV    AX, DX
  1000. L0797H:        DEC    AX
  1001.         MOV    DX, AX
  1002.         ADD    AX, CX
  1003.         JAE    L07A0H
  1004.         XOR    AX, AX
  1005. L07A0H:        NOT    DX
  1006.         AND    AX, DX
  1007. L07A4H:        PUSH    DX
  1008.         CALL    NEAR PTR Proc07D6Seg1
  1009.         POP    DX
  1010.         JAE    L07B8H
  1011.         CMP    DX, -16
  1012.         JZ     L07B5H
  1013. L07B0H:        MOV    AX, 0010H
  1014.         JMP    SHORT L0797H
  1015. L07B5H:        STC
  1016.         JMP    SHORT L07D3H
  1017. L07B8H:        MOV    DX, AX
  1018.         SUB    DX, WORD PTR ES:[BX+4]
  1019.         MOV    WORD PTR [BX+4], AX
  1020.         MOV    WORD PTR [BX+10], DI
  1021.         MOV    SI, WORD PTR [BX+12]
  1022.         DEC    DX
  1023.         MOV    WORD PTR [SI], DX
  1024.         INC    DX
  1025.         ADD    SI, DX
  1026.         MOV    WORD PTR [SI], 0FFFEH
  1027.         MOV    WORD PTR [BX+12], SI
  1028. L07D3H:        POP    DI
  1029.         POP    CX
  1030.         RET
  1031. Proc0749Seg1    ENDP
  1032.  
  1033.  
  1034. Proc07D6Seg1    PROC    NEAR
  1035.         MOV    DX, AX
  1036.         TEST    BYTE PTR [BX+2], 4
  1037.         JZ     L07E0H
  1038.         JMP    SHORT L0831H
  1039. L07E0H:        PUSH    DX
  1040.         PUSH    CX
  1041.         PUSH    BX
  1042.         MOV    SI, WORD PTR [BX+6]
  1043.         MOV    BX, WORD PTR CS:L01ACH
  1044.         XOR    CX, CX
  1045.         OR    DX, DX
  1046.         JNZ    L07F8H
  1047.         TEST    BX, 0010H
  1048.         JNZ    L0837H
  1049.         INC    CX
  1050. L07F8H:        MOV    AX, 0022H
  1051.         TEST    BX, 0001H
  1052.         JNZ    L0804H
  1053.         MOV    AX, 0020H
  1054. L0804H:        PUSH    SI
  1055.         PUSH    CX
  1056.         PUSH    DX
  1057.         PUSH    AX
  1058.         CALL    FAR PTR GlobalRealloc
  1059.         OR    AX, AX
  1060.         JZ     L0837H
  1061.         CMP    AX, SI
  1062.         JNZ    L0831H
  1063.         PUSH    SI
  1064.         CALL    FAR PTR GlobalSize
  1065.         OR    DX, AX
  1066.         JZ     L0831H
  1067.         POP    BX
  1068.         POP    CX
  1069.         POP    DX
  1070.         MOV    AX, DX
  1071.         TEST    BYTE PTR [BX+2], 4
  1072.         JZ     L082EH
  1073.         DEC    DX
  1074.         MOV    WORD PTR [BX-2], DX
  1075. L082EH:        CLC
  1076.         JMP    SHORT L083BH
  1077. L0831H:        MOV    AX, 0012H
  1078.         JMP    NEAR PTR L0683H
  1079. L0837H:        POP    BX
  1080.         POP    CX
  1081.         POP    DX
  1082.         STC
  1083. L083BH:        RET
  1084. Proc07D6Seg1    ENDP
  1085.  
  1086.  
  1087. Proc083CSeg1    PROC    NEAR
  1088.         PUSH    DI
  1089.         MOV    SI, WORD PTR [BX+10]
  1090.         CMP    SI, WORD PTR [BX+12]
  1091.         JNZ    L0848H
  1092.         MOV    SI, WORD PTR [BX+8]
  1093. L0848H:        LODSW
  1094.         CMP    AX, -2
  1095.         JZ     L0856H
  1096.         MOV    DI, SI
  1097.         AND    AL, -2
  1098.         ADD    SI, AX
  1099.         JMP    SHORT L0848H
  1100. L0856H:        DEC    DI
  1101.         DEC    DI
  1102.         MOV    SI, DI
  1103.         POP    DI
  1104.         RET
  1105. Proc083CSeg1    ENDP
  1106.  
  1107.  
  1108. Proc085CSeg1    PROC    NEAR
  1109.         PUSH    BP
  1110.         MOV    BP, SP
  1111.         POP    BP
  1112.         RET
  1113. Proc085CSeg1    ENDP
  1114.  
  1115.  
  1116. Proc0861Seg1    PROC    NEAR
  1117.         MOV    AX, 0014H
  1118.         JMP    NEAR PTR L0683H
  1119. L0867H        DB    0000H
  1120. Proc0861Seg1    ENDP
  1121.  
  1122. Proc0868Seg1    PROC    NEAR
  1123.         PUSH    BP
  1124.         MOV    BP, SP
  1125.         SUB    SP, 4
  1126.         MOV    AX, 0FFFFH
  1127.         PUSH    AX
  1128.         CALL    FAR PTR LockSegment
  1129.         MOV    AX, 0020H
  1130.         PUSH    AX
  1131.         CMP    WORD PTR [BP+4], 0
  1132.         JZ     L0886H
  1133.         MOV    AX, WORD PTR [BP+4]
  1134.         JMP    SHORT L0889H
  1135. L0886H:        MOV    AX, 0001H
  1136. L0889H:        PUSH    AX
  1137.         CALL    FAR PTR LocalAlloc
  1138.         MOV    WORD PTR [BP-2], AX
  1139.         MOV    AX, 0FFFFH
  1140.         PUSH    AX
  1141.         CALL    FAR PTR UnlockSegment
  1142.         MOV    AX, WORD PTR [BP-2]
  1143.         MOV    SP, BP
  1144.         POP    BP
  1145.         RET
  1146. Proc0868Seg1    ENDP
  1147.  
  1148.  
  1149. Proc08A2Seg1    PROC    NEAR
  1150.         PUSH    BP
  1151.         MOV    BP, SP
  1152.         PUSH    WORD PTR [BP+4]
  1153.         CALL    FAR PTR LocalFree
  1154.         MOV    SP, BP
  1155.         POP    BP
  1156.         RET
  1157. Proc08A2Seg1    ENDP
  1158.  
  1159.  
  1160. Proc08B1Seg1    PROC    NEAR
  1161.         NOP
  1162.         PUSH    BP
  1163.         MOV    BP, SP
  1164.         SUB    SP, 4
  1165.         CMP    WORD PTR [BP+4], 0
  1166.         JNZ    L08CAH
  1167.         PUSH    WORD PTR [BP+6]
  1168.         CALL    NEAR PTR Proc0868Seg1
  1169.         ADD    SP, 2
  1170.         JMP    SHORT L08FEH
  1171.         NOP
  1172. L08CAH:        MOV    AX, 0FFFFH
  1173.         PUSH    AX
  1174.         CALL    FAR PTR LockSegment
  1175.         PUSH    WORD PTR [BP+4]
  1176.         CMP    WORD PTR [BP+6], 0
  1177.         JZ     L08E2H
  1178.         MOV    AX, WORD PTR [BP+6]
  1179.         JMP    SHORT L08E5H
  1180.         NOP
  1181. L08E2H:        MOV    AX, 0001H
  1182. L08E5H:        PUSH    AX
  1183.         MOV    AX, 0062H
  1184.         PUSH    AX
  1185.         CALL    FAR PTR LocalRealloc
  1186.         MOV    WORD PTR [BP-2], AX
  1187.         MOV    AX, 0FFFFH
  1188.         PUSH    AX
  1189.         CALL    FAR PTR UnlockSegment
  1190.         MOV    AX, WORD PTR [BP-2]
  1191. L08FEH:        MOV    SP, BP
  1192.         POP    BP
  1193.         RET
  1194. Proc08B1Seg1    ENDP
  1195.  
  1196.  
  1197. Proc0902Seg1    PROC    NEAR
  1198.         PUSH    BP
  1199.         MOV    BP, SP
  1200.         PUSH    WORD PTR [BP+4]
  1201.         CALL    FAR PTR LocalSize
  1202.         MOV    SP, BP
  1203.         POP    BP
  1204.         RET
  1205. Proc0902Seg1    ENDP
  1206.  
  1207.  
  1208. Proc0911Seg1    PROC    NEAR
  1209.         NOP
  1210. Proc0911Seg1    ENDP
  1211.  
  1212.         END    L01B4H